#include "MenuCarpetaDescarga.h"
#include "MenuUsuariosConectados.h"

MenuCarpetaDescarga::MenuCarpetaDescarga(bool download) : continueDownload(download){
}

MenuCarpetaDescarga::~MenuCarpetaDescarga() {
}

void MenuCarpetaDescarga::update() {
	Usuario * usuario = Usuario::getInstance();

	if (!usuario->getCarpetaDescarga().empty()) {
		cout << "Carpeta de descarga actual: " << usuario->getCarpetaDescarga() << endl << endl;
	}

	string path;
	bool pathOk = false;
	bool quit = false;
	do {
		cout << "Ingrese el path de la carpeta de descarga (o volver para regresar al menu): ";
		cin.clear();
		getline(cin,path);
		path = formatearPath(path);

		if (path.compare("volver") == 0)
		{
			quit = true;
		} else {
			if (path.at(path.length()-1) != '/') {
				path += "/";
			}
			ifstream stream;
			stream.open(path.c_str(),ifstream::in);
			stream.close();
			stream.flags();
			if(!stream.fail())
			{
				pathOk = true;
				usuario->setCarpetaDescarga(path);
			}
			else
			{
				cout << endl << "No existe la carpeta: " << path << endl;
			}
		}
	} while(!pathOk && !quit);
	if (quit) {
		MenuStack::getInstance()->pop();
	} else {
		if (continueDownload) {
			MenuStack::getInstance()->pop();
			MenuUsuariosConectados* menuUsuarios = new MenuUsuariosConectados();
			MenuStack::getInstance()->push(menuUsuarios);
		} else {
			MenuStack::getInstance()->pop();
		}
	}
}
